/* 引入模拟数据 */
import other from './data/other';
import goods from './data/goods'
import classify from './data/classify.data'
import carts from './data/cart-goods'
import orders from './data/orders'
/* 封装请求轮播图的函数 */
/* sort参数:排序方式 */
export function apiBanner(sort) {
	// promise 异步编程
	return new Promise((resolve, reject) => {
		//不用 this 用箭头函数会提示 undefined
		//定时只是模拟请求的状态
		//  通用写法
		setTimeout(() => {
			try {
				let list = []; //接受请求结果
				// 根据 sort 传递过来的关键字确认排序方式
				/* 请求到数据后的操作 */
				switch (sort) {
					case 'asc':
						list = [...other[0].list];
						break;
					case 'desc':
						list = other[0].list.reverse();
						break;
				}
				/* 请求到数据后的操作 */
				resolve(list); //请求最终的数据
			} catch (e) {
				reject(e); //操作失败
			}
		}, 1000)

	})

}
/* 封装请求选项卡标题的函数  apiTabName */
export function apiTabName(sort) {
	// promise 异步编程
	return new Promise((resolve, reject) => {
		//不用 this 用箭头函数会提示 undefined
		//定时只是模拟请求的状态
		//  通用写法
		setTimeout(() => {
			try {
				let list = []; //接受请求结果
				// 根据 sort 传递过来的关键字确认排序方式
				/* 请求到数据后的操作 */
				list = [...other[1].list];
				/* 请求到数据后的操作 */
				resolve(list); //请求最终的数据
			} catch (e) {
				reject(e); //操作失败
			}
		}, 1000)

	})

}

/* 封装请求分类导航的数据(先不考虑分页)  apiGoods*/

/* 
 p:获取当前页码
 num:每页条数
 tabname:选项卡关键字
 */
export function apiGoods(p, num, tabname) {
	// promise 异步编程
	return new Promise((resolve, reject) => {
		setTimeout(() => {
			try {
				let list = [],
					result = [],
					indexs = [];

				switch (tabname) {
					case '全部':
						list = [...goods];
						break;
						// 剩余所有关键字都执行相同的逻辑
					default:
						let arr = tabname.split('');
						goods.forEach((item) => {
							//遍历关键词
							for (let i of arr) {
								//只要商品名称中匹配上关键字的任意一个那么都将结果传递过去
								if (item.goodName.indexOf(i) != -1) {
									list.push(item);
									//终止当前关键字继续
									break;
								}
							}
						})
				};
				//计算出总页数
				let sumPages = Math.ceil(list.length / num);
				console.log('总页数是' + sumPages);
				//当前页码是否小于等于总页数，成立了才能需截取数据
				if (p <= sumPages) {
					for (let i = (p - 1) * num; i < p * num; i++) {
						// console.log('打印下标');
						// console.log(i);
						//当 i 等于查询后的数组长度，断掉循环
						if (i == list.length) break;
						//否则将当前循环的元素添加到 result 传递
						result.push(list[i]);
					}
				}
				/* 请求到数据后的操作 */
				resolve(result); //请求最终的数据
			} catch (e) {
				reject(e); //操作失败
			}
		}, 1000)

	})
}

export function apiGoods2(p, num, tabname) {
	// promise 异步编程
	return new Promise((resolve, reject) => {
		setTimeout(() => {
			try {
				let list = [],
					result = [],
					indexs = [];

				switch (tabname) {
					case '全部':
						list = [...goods];
						break;
						// 剩余所有关键字都执行相同的逻辑
					default:
						goods.forEach((item) => {
							//遍历关键词
							//只要商品名称中匹配上关键字的任意一个那么都将结果传递过去
							if (item.goodName.indexOf(tabname) != -1) {
								list.push(item);
								//终止当前关键字继续
							}
						})
						break;

				};
				//计算出总页数
				let sumPages = Math.ceil(list.length / num);
				console.log('总页数是' + sumPages);
				//当前页码是否小于等于总页数，成立了才能需截取数据
				if (p <= sumPages) {
					for (let i = (p - 1) * num; i < p * num; i++) {
						// console.log('打印下标');
						// console.log(i);
						//当 i 等于查询后的数组长度，断掉循环
						if (i == list.length) break;
						//否则将当前循环的元素添加到 result 传递
						result.push(list[i]);
					}
				}
				/* 请求到数据后的操作 */
				resolve(result); //请求最终的数据
			} catch (e) {
				reject(e); //操作失败
			}
		}, 1000)

	})
}

export function apiClassfy(datas) {
	return new Promise((resolve, reject) => {
		setTimeout(() => {
			try {
				let list = [];
				// 申请导航栏数据
				console.log(classify);
				classify.forEach((item) => {
					list.push(item);
				})

				resolve(list);
			} catch (e) {
				reject(e);
			}
		}, 800)
	})
}

export function apiCarts(datas) {
	return new Promise((resolve, reject) => {
		setTimeout(() => {
			try {
				let list = [];
				// 申请导航栏数据
				console.log(carts);
				carts.forEach((item) => {
					list.push(item);
				})

				resolve(list);
			} catch (e) {
				reject(e);
			}
		}, 800)
	})
}
/* 封装请求选项卡标题的函数  apiTabName */
export function apiOrders(sort) {
	// promise 异步编程
	return new Promise((resolve, reject) => {
		setTimeout(() => {
			try {
				let list = [];
				switch (sort) {
					case '待付款':
						orders.forEach((item) => {
							if (item.deal == sort) {
								list.push(item);
							}
						})
						break;
					case '待发货':
						orders.forEach((item) => {
							if (item.deal == sort) {
								list.push(item);
							}
						})
						break;
					case '待收货':
						orders.forEach((item) => {
							if (item.deal == sort) {
								list.push(item);
							}
						})
						break;
					case '待评价':
						orders.forEach((item) => {
							if (item.deal == sort) {
								list.push(item);
							}
						})
						break;
				}

				resolve(list);
			} catch (e) {
				reject(e);
			}
		}, 100)

	})
}